package com.mazaiting.generator.service;

import com.mazaiting.common.core.ex.exceptions.BusinessException;
import com.mazaiting.common.core.ex.exceptions.EmptyObjectException;
import com.mazaiting.generator.domain.query.PreviewQuery;
import com.mazaiting.generator.domain.query.TableQuery;
import com.mazaiting.generator.domain.vo.PreviewVO;
import com.mazaiting.generator.domain.vo.TableDefaultVO;
import com.mazaiting.generator.domain.vo.TableVO;
import com.mazaiting.mybatisplus.domain.vo.BasePageVO;

import java.util.Map;

/**
 * 数据表
 *
 * @author 阿沐 babamu@126.com
 */
public interface ITableService {
    /**
     * 根据条件查询表分页
     *
     * @param tableQuery 查询条件
     * @return 分页数据
     */
    BasePageVO<TableVO> page(TableQuery tableQuery) throws Exception;

    /**
     * 根据文件类型预览
     *
     * @param previewQuery 预览查询对象
     * @return 文件内容
     */
    PreviewVO getContentByFileType(PreviewQuery previewQuery) throws BusinessException, EmptyObjectException;

    /**
     * 获取默认的数据
     * @return 表默认数据
     */
    TableDefaultVO getDefaultData();

    /**
     * 根据预览选项
     * @param previewQuery 预览选项
     * @return 预览对象
     */
    Map<String, Object> getDataModel(PreviewQuery previewQuery) throws Exception;
}